Zucker SOCの動かし方(とSDRAMの動作確認方法)
ULX3S移植版の Zucker SOC を git clone して、以下のコマンドで「ファームウェアのビルド → FPGAのビットストリームをビルド → ビットストリームのアップロード」を行う。
code:sh
git clone git@github.com:thata/zucker.git
cd zucker
(cd firmware/ && make clean firmware) && BOARD=ulx3s make clean zucker_ecp5_pico prog
現時点ではSDRAMの動作確認用の以下のコードが動いている。LEDへ 2 + 4 + 8 + 16 の結果である 30 が表示されればOK。
https://gyazo.com/a8a1babee72c4c8660a42cf0d4a55710
code:firmware/boot_picorv32.S
// SDRAMへの値の出し入れ
li t1, 0x40000000
li t0, 10
sw t0, 0(t1)
li t1, 0x40000004
li t0, 20
sw t0, 0(t1)
li t1, 0x40000000
lw t2, 0(t1)
li t1, 0x40000004
lw t3, 0(t1)
// t0 = t2 + t3
add t0, t2, t3
// 10 + 20 の結果をLEDに表示
li t1, 0xf0001000 // LEDコントロールレジスタのアドレス
sw t0, 0(t1) // LEDコントロールレジスタへ書き込み
// 無限ループ
foo:
j foo